﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using VNet.VisiSuite.Common.Production;
using VNet.VisiSuite.Service.Contact.Message.ProductionData;

namespace VNet.VisiSuite.Common.Production
{
    public interface ProductionInterface
    {
        #region Properties

        Brush HeaderTextBrush { get; }
        Brush HeaderBrush { get; }
        bool Offline { get; set; }

        DateTime GraphStartTime { get; }
        DateTime GraphEndTime { get; }
        List<ProductionMeterGraphLegend> GraphLegend { get; }
        int GraphInterval { get; }
        ObservableCollection<ProductionMeterDataPoint> GraphDataPoints { get; }
        Visibility Visibility { get; set;}
        List<AxisDetailItem> AxisDetails { get; }
        // List<LegendItem> Legends { get; }

        Visibility CountDownTimerVisibility { get; set; }
        TimeSpan CountDownTime { get; set; }

        Visibility CircularVisibility { get; set; }
        Visibility PressToChangeVisibility { get; }
        Visibility DowntimeVisibility { get;}
        string DowntimeDescription { get; }
        Brush DowntimeBackground { get; }
        Brush DowntimeForeground { get; }
        GridLength DowntimeColumn1 { get; }
        GridLength DowntimeColumn2 { get; }
        GridLength DowntimeColumn3 { get; }

        string TargetCycleTime { get; }
        string TargetLoadUnloadTime { get; }
        int TargetLoadUnloadSecs { get; }
        string AverageCycleTime { get; set; }
        string AverageLoadUnloadTime { get; set; }

        string CurrentSku { get; }
        string CurrentWorkOrder { get; }
        string CurrentPass { get; }
        string CurrentQuantity { get; }
        string CurrentRemaining { get; }
        string NextSku { get; }
        string NextWorkOrder { get; }
        string NextPass { get; }
        string NextQuantity { get; }
        string NextRemaining { get; }

        string Operator { get; }

        bool RedrawError { get; set; }

        #endregion

        #region Methods
        bool getAlarmSettings(List<int> percentages, List<Brush> foregrounds, List<Brush> backgrounds);
        void showDowntimeDialog(bool is_from_process_visibox_events, bool hide_progress_bar);
        void handleCircularProgressUpdates(object send, EventArgs args);

        #endregion

    }
}
